var xhr;
var salida = "";
var num = 0;
var numFam = 2;
var popUp;

function modificar(){
    if (num < 1){
        num++;
        lugar = document.getElementById('entrarDatosUsu');
        contenedor = document.createElement('div');
        contenedor.id = 'div' + num;
        lugar.appendChild(contenedor);

        ele = document.createElement('div');
        ele.name = 'div' + num;
        ele.innerHTML = "<label>Escriba el DNI del usuario a modificar:  </label><input name='div" + num + "' type='text' class='inputbox' onkeyup='if(event.keyCode == 13){borrarM(this)}' />";
        contenedor.appendChild(ele);
    }
}

function eliminar(){
    if (num < 1){
        num++;
        lugar = document.getElementById('entrarDatosUsu');
        contenedor = document.createElement('div');
        contenedor.id = 'div' + num;
        lugar.appendChild(contenedor);

        ele = document.createElement('div');
        ele.name = 'div' + num;
        ele.innerHTML = "<label>Escriba el DNI del usuario a eliminar:  </label><input name='div" + num + "' type='text' class='inputbox' onkeyup='if(event.keyCode == 13){eliminarUsu(this)}' />";
        contenedor.appendChild(ele);
    }
}

function borrarM(obj){
    lugar = document.getElementById('entrarDatosUsu');
    lugar.removeChild(document.getElementById(obj.name));
    envioDatosUsu(obj.value);
    num = 0;
}

function borrarE(obj){
    lugar = document.getElementById('entrarDatosUsu');
    lugar.removeChild(document.getElementById(obj.name));
    num = 0;
}

function accionEnvioDatosUsu(){
    if (xhr.readyState == 4){
        var results = xhr.responseXML;
        var error = results.getElementsByTagName("error");
        if (error.item(0).firstChild.nodeValue == "true")
            document.location.href ="/BancosolProject/noenc.jsp";
        else if (error.item(0).firstChild.nodeValue == "falseCab")
            document.location.href = "/BancosolProject/consUsu.jsp";
        else if (error.item(0).firstChild.nodeValue == "trueOtraAsoc")
            document.location.href = "/BancosolProject/error.jsp";
        else
            document.location.href = "/BancosolProject/consUnidFam.jsp";
    }
}

function envioDatosUsu(dni){
    crearObjeto();
    if (xhr != undefined){
        xhr.open("GET", "servlets/ConsUsu?buscar=" + dni, true);
        xhr.onreadystatechange = accionEnvioDatosUsu;
        xhr.send(null);
    }
}

function crearObjeto() {
    if (window.ActiveXObject) {
        xhr = new ActiveXObject("Microsoft.XMLHttp");
    } else if ((window.XMLHttpRequest) || (typeof XMLHttpRequest) != undefined) {
        xhr = new XMLHttpRequest();
    } else {
        alert("Su navegador no tiene soporte para AJAX");
    }
}

function accionConsAsoc(){
    if (xhr.readyState == 4){
        document.location.href = "/BancosolProject/consAsoc.jsp";
    }
}

function enviarConsAsoc(cifAsoc) {
    crearObjeto();
    if (xhr != undefined) {
        xhr.open("GET", "servlets/ConsAsoc?cifAsoci=" + cifAsoc, true);
        xhr.onreadystatechange = accionConsAsoc;
        xhr.send(null);
    }
}

function redireccion() {
    if (xhr.readyState == 4) {
        var results = xhr.responseXML;
        var error = results.getElementsByTagName("error");
        if (error.item(0).firstChild.nodeValue == "true")
            document.location.href ="/BancosolProject/error.jsp";
        else
            document.location.href = "/BancosolProject/ok.jsp";
        //xhr = undefined;
    }
}

function enviarModAsoc(cif, nombre, telefono, correo, contrasena, contrasenaR) {
    crearObjeto();
    if (xhr != undefined) {
        var atributos = "cif=" + cif.value + "&nombre=" + nombre.value + "&telefono=" + telefono.value + "&correo=" + correo.value + "&contrasena=" + contrasena.value + "&contrasenaR=" + contrasenaR.value;
        xhr.open("GET", "servlets/ModAsoc?" + atributos, true);
        xhr.onreadystatechange = redireccion;
        xhr.send(null);
    }
}

function enviarModUsu(nExp, dni, nombre, apellidos, tarjResi, nacionalidad, fechaNac, tipoVia, nombreVia, numeroVia, ciudad, provincia, cp, asoc) {
    crearObjeto();
    if(xhr != undefined) {
        var argumentos = "nExp=" + nExp.value + "&nombre=" + nombre.value + "&apellidos=" + apellidos.value;
        argumentos += "&dni=" + dni.value + "&tarjResi=" + tarjResi.value + "&nacionalidad=" + nacionalidad.value;
        argumentos += "&fechaNac=" + fechaNac.value + "&tipoVia=" + tipoVia.value + "&nombreVia=" + nombreVia.value;
        argumentos += "&numeroVia=" + numeroVia.value + "&ciudad=" + ciudad.value + "&provincia=" + provincia.value;
        argumentos += "&cp=" + cp.value + "&asoc=" + asoc.value;
        xhr.open("GET", "servlets/ModUsu?" + argumentos, true);
        xhr.onreadystatechange = redireccion;
        xhr.send(null);
    }
}

function enviarModUnidFam(nombre, apellidos, dni, parentesco){
    crearObjeto();
    if (xhr != undefined){
        var argumentos = "nombre=" + nombre.value + "&apellidos=" + apellidos.value;
        argumentos += "&dni=" + dni.value + "&parentesco=" + parentesco.value;
        xhr.open("POST", "servlets/ModUnidFam?" + argumentos, true);
        xhr.onreadystatechange = redireccion;
        xhr.send(null);
    }
}

function eliminarAsoc(cif) {
    crearObjeto();
    if(xhr != undefined) {
        xhr.open("GET", "servlets/ElimAsoc?cif=" + cif, true);
        xhr.send(null);
    }
}

function eliminarUsu(dni) {
    crearObjeto();
    if(xhr != undefined) {
        xhr.open("GET", "servlets/ElimUsu?dni=" + dni.value, true);
        xhr.onreadystatechange = redireccion;
        xhr.send(null);
        borrarE(dni);
    }
}

function escribir() {
    document.setAttribute("usuario", null);
    alert("Pulsaste");
}

function habilitarCampos(admin){
    document.getElementById("dni").disabled = '';
    document.getElementById("nExp").disabled = '';
    document.getElementById("nombre").disabled = '';
    document.getElementById("apellidos").disabled = '';
    document.getElementById("tarjResi").disabled = '';
    document.getElementById("nacionalidad").disabled = '';
    document.getElementById("fechaNac").disabled = '';
    document.getElementById("tipoVia").disabled = '';
    document.getElementById("nombreVia").disabled = '';
    document.getElementById("numeroVia").disabled = '';
    document.getElementById("ciudad").disabled = '';
    document.getElementById("provincia").disabled = '';
    document.getElementById("cp").disabled = '';
    if (admin)
        document.getElementById("asoc").disabled = '';
}

function deshabilitarCampos(admin){
    document.getElementById("nExp").disabled = 'disabled';
    document.getElementById("nombre").disabled = 'disabled';
    document.getElementById("apellidos").disabled = 'disabled';
    document.getElementById("tarjResi").disabled = 'disabled';
    document.getElementById("nacionalidad").disabled = 'disabled';
    document.getElementById("fechaNac").disabled = 'disabled';
    document.getElementById("tipoVia").disabled = 'disabled';
    document.getElementById("nombreVia").disabled = 'disabled';
    document.getElementById("numeroVia").disabled = 'disabled';
    document.getElementById("ciudad").disabled = 'disabled';
    document.getElementById("provincia").disabled = 'disabled';
    document.getElementById("cp").disabled = 'disabled';
    if (admin)
        document.getElementById("asoc").disabled = 'disabled';
}

function accionComprobarUsuario(admin){
    if (xhr.readyState == 4){
        var results = xhr.responseXML;
        var esta = results.getElementsByTagName("esta");
        if (esta.item(0).firstChild.nodeValue == "true" || document.getElementById("dni").value == ""){
            if (document.getElementById("dni").value != ""){
                var asociacion = results.getElementsByTagName("asoc");
                document.getElementById("nombreAsociacion").innerHTML = "<H1>El usuario está registrado en la asociación " + asociacion.item(0).firstChild.nodeValue + "</H1>";
            }
            if (admin == "ADMIN")
                deshabilitarCampos(true);
            else
                deshabilitarCampos(false);
            document.getElementById("fam").style.display = "none";
        }else {
            if (admin == "ADMIN")
                habilitarCampos(true);
            else
                habilitarCampos(false);
            document.getElementById("nombreAsociacion").innerHTML = "";
            document.getElementById("fam").style.display = "";
        }
    }
}

function comprobarUsuario(dni, admin){
    crearObjeto();
    if(xhr != undefined){
        xhr.open("GET", "servlets/ComprobarUsuario?dni=" + dni, true);
        xhr.onreadystatechange = function () {accionComprobarUsuario(admin)}
        xhr.send(null);
    }
}

function accionAnadirAsocSelect(cif, mod, asoc){
    if (xhr.readyState == 4){        
        var results = xhr.responseXML;
        var nombreAsoc = results.getElementsByTagName("nombre");
        var cifAsoc = results.getElementsByTagName("cif");
        var select = document.getElementById("asoc");
        var op = document.createElement("option");
            op.value = "seleccion";
            op.text = "Seleccione Asociación";
            select.appendChild(op);
        for (var i = 0; i < nombreAsoc.length; i++){
            op = document.createElement("option");
            op.value = cifAsoc.item(i).firstChild.nodeValue;
            op.text = nombreAsoc.item(i).firstChild.nodeValue;
            select.appendChild(op);
        }
        if (cif != "ADMIN"){
            document.getElementById("asoc").style.display = 'none';
            i = 0;
            while (document.getElementById("asoc").options[i].value != cif)
                i++;
            document.getElementById("asoc").selectedIndex = i;
        }

        if (mod)
            seleccionarSelect(asoc);
    }
}

function anadirAsocSelect(cif, mod, asoc){
    crearObjeto();
    if (xhr != undefined){
        xhr.open("GET", "servlets/ListarAsoc", true);
        xhr.onreadystatechange = function () {accionAnadirAsocSelect(cif, mod, asoc)};
        xhr.send(null);
    }
}

function seleccionarSelect(asoc){
    select = document.getElementById("asoc");
    select.value = asoc;
}

function accionRellenarTabla(usuario){
    if (xhr.readyState == 4){
        var tabla;
        var results = xhr.responseXML;
        var nombreAsoc = results.getElementsByTagName("nombre");
        var cifAsoc = results.getElementsByTagName("cif");
        var telAsoc = results.getElementsByTagName("telefono");
        var correoAsoc = results.getElementsByTagName("correo");
        var numSocios = results.getElementsByTagName("numSocios");
        
        tabla = document.getElementById("cuerpoTabla");

        for (i = 0; i < nombreAsoc.length; i++){
            fila = document.createElement("tr");
            if (i % 2 == 0)
                fila.className = "row0";
            else
                fila.className = "row1"
            tabla.appendChild(fila);

            elem = document.createElement('td');
            elem.align = "center";
            elem.id = cifAsoc.item(i).firstChild.nodeValue;
            if (usuario != "admin" && cifAsoc.item(i).firstChild.nodeValue != usuario.toString().toUpperCase())
                elem.innerHTML = "<input type='checkbox' value='" + cifAsoc.item(i).firstChild.nodeValue + "' id='" + cifAsoc.item(i).firstChild.nodeValue +"' disabled='disabled'></input>";
            else if (cifAsoc.item(i).firstChild.nodeValue == usuario.toString().toUpperCase())
                elem.innerHTML = "<input type='checkbox' value='" + cifAsoc.item(i).firstChild.nodeValue + "' id='" + cifAsoc.item(i).firstChild.nodeValue +"' checked></input>";
            else
                elem.innerHTML = "<input type='checkbox' value='" + cifAsoc.item(i).firstChild.nodeValue + "' id='" + cifAsoc.item(i).firstChild.nodeValue +"'></input>";
            fila.appendChild(elem);

            elem = document.createElement('td');
            elem.innerHTML = nombreAsoc.item(i).firstChild.nodeValue;
            fila.appendChild(elem);

            elem = document.createElement('td');
            elem.innerHTML = cifAsoc.item(i).firstChild.nodeValue;
            fila.appendChild(elem);

            elem = document.createElement('td');
            elem.innerHTML = telAsoc.item(i).firstChild.nodeValue;
            fila.appendChild(elem);

            elem = document.createElement('td');
            if (correoAsoc.item(i).firstChild.nodeValue == "null")
                elem.innerHTML = "";
            else
                elem.innerHTML = correoAsoc.item(i).firstChild.nodeValue;
            fila.appendChild(elem);

            elem = document.createElement('td');
            elem.innerHTML = numSocios.item(i).firstChild.nodeValue;
            fila.appendChild(elem);
        }
    }
}

function rellenarTabla(usuario){
    crearObjeto();
    if (xhr != undefined){
        xhr.open("GET", "servlets/ListarAsoc", true);
        xhr.onreadystatechange = function () {accionRellenarTabla(usuario)};
        xhr.send(null);
    }

}

function eliminarAsocTabla(usuario){
    if (usuario.toString() != "admin")
        alert("Sólo el administrador puede eliminar asociaciones");
    else{
        var tabla = document.getElementById("cuerpoTabla");
        var texto, ckb;
        for (i = 0; i < tabla.rows.length; i++){
            texto = tabla.rows[i].cells[0].id;
            ckb = document.getElementById(texto).childNodes[0].checked;
            if (ckb){
                eliminarAsoc(texto);
            }
        }
        document.location.href ="/BancosolProject/gestAsoc.jsp";
    }
}

function modificarAsocTabla(usuario){
    var tabla = document.getElementById("cuerpoTabla");
    var texto, ckb;
    var i = 0;
    var asocAMod = "";
    while (i < tabla.rows.length){
        texto = tabla.rows[i].cells[0].id;
        ckb = document.getElementById(texto).childNodes[0].checked;
        if (ckb){
            asocAMod = texto;
        }
        i++;
    }
    if (asocAMod != "")
            enviarConsAsoc(asocAMod);
    else
        alert("Debe seleccionar una asociación");
}

function anadirFam() {
    numFam++;
    tabla = document.getElementById("cuerpoTabla");

    fila = document.createElement("tr");
    fila.id = "tr" + numFam;
    tabla.appendChild(fila);

    elem = document.createElement('td');
    elem.align = "center";
    elem.id = "nExp" + numFam;
    elem.innerHTML = "<input id='nExp"+ numFam +"' type='text' disabled='disabled' class='inputbox' value='" + window.opener.document.getElementById("nExp").value + "-0" + (numFam-1) + "'/>";
    fila.appendChild(elem);

    elem = document.createElement('td');
    elem.align = "center";
    elem.id = "parentesco" + numFam;
    elem.innerHTML = "<input id='parentesco" + numFam + "' type='text' class='inputbox' />";
    fila.appendChild(elem);

    elem = document.createElement('td');
    elem.align = "center";
    elem.id = "nombre" + numFam;
    elem.innerHTML = "<input id='nombre" + numFam +" ' type='text' class='inputbox' />";
    fila.appendChild(elem);

    elem = document.createElement('td');
    elem.align = "center";
    elem.id = "apellidos" + numFam;
    elem.innerHTML = "<input id='apellidos" + numFam +" ' type='text' class='inputbox' />";
    fila.appendChild(elem);

    elem = document.createElement('td');
    elem.align = "center";
    elem.id = "dni"+ numFam;
    elem.innerHTML = "<input id='dni" + numFam + "' type='text' class='inputbox'/>";
    fila.appendChild(elem);

    elem = document.createElement('td');
    elem.align = "center";
    elem.id = "eliminarFam" + numFam;
    elem.innerHTML = "<img src='images/cancel_16.png' name='" + numFam +" ' alt='Eliminar' onclick='eliminarFam(this);' />";
    fila.appendChild(elem);
}

function eliminarFam(obj){
    var td = obj.parentNode;
    var tr = td.parentNode;
    var table = tr.parentNode;
    table.removeChild(tr);
}

function abrirPaginaFam(){
    if (document.getElementById("nExp").value != "")
        popUp = window.open("anadirFam.jsp", "Añadir Familiares", "width=1000, height=500, top=100, left=200");
    else
        alert("Debe rellenar el número de expediente");
    return false;
}

function rellenarFam(){
    var dni = opener.document.getElementById("dni").value;
    var exp = opener.document.getElementById("nExp").value;
    var nombre = opener.document.getElementById("nombre").value;
    var apellidos = opener.document.getElementById("apellidos").value;
    
    document.getElementById("nExp1").value = exp;
    document.getElementById("nombre1").value = nombre;
    document.getElementById("apellidos1").value = apellidos;
    document.getElementById("dni1").value = dni;

    document.getElementById("nExp2").value = exp + "-01";
}

function almacenarDatosFam(){
    window.opener.document.getElementById("dni").value = document.getElementById("dni1").value;
    window.opener.document.getElementById("nExp").value = document.getElementById("nExp1").value;
    window.opener.document.getElementById("nombre").value = document.getElementById("nombre1").value;
    window.opener.document.getElementById("apellidos").value = document.getElementById("apellidos1").value;

    crearObjeto();
    if (xhr != undefined){
        for (i = 0; i < document.getElementById("cuerpoTabla").rows.length; i++){
            ident = "0"+i;
            exp = document.getElementById("cuerpoTabla").rows[0].cells[0].childNodes[0].value;
            setTimeout(null, 300);
            parentesco = document.getElementById("cuerpoTabla").rows[i].cells[1].childNodes[0].value;
            nombre = document.getElementById("cuerpoTabla").rows[i].cells[2].childNodes[0].value;
            apellidos = document.getElementById("cuerpoTabla").rows[i].cells[3].childNodes[0].value;
            dni = document.getElementById("cuerpoTabla").rows[i].cells[4].childNodes[0].value;
            variables = "?nExp=" + exp + "&parentesco=" + parentesco + "&nombre=" + nombre + "&apellidos=" + apellidos + "&dni=" + dni + "&ident="+ ident;
            xhr.open("GET", "servlets/AnadirFam" + variables, true);
            xhr.onreadystatechange = redireccion;
            xhr.send(null);
        }        
    }
    window.close();
}